﻿namespace Plugins.Xml.Serialization
{
    using System;

    [AttributeUsage(AttributeTargets.Property, AllowMultiple = false)]
    public sealed class XmlBooleanSerializerAttribute : XmlSerializerAttribute
    {
        public XmlBooleanSerializerAttribute()
            : base(BooleanSerializer.Instance)
        {
        }
    }

    [AttributeUsage(AttributeTargets.Property, AllowMultiple = false)]
    public sealed class XmlByteSerializerAttribute : XmlSerializerAttribute
    {
        public XmlByteSerializerAttribute()
            : base(ByteSerializer.Instance)
        {
        }
    }

    [AttributeUsage(AttributeTargets.Property, AllowMultiple = false)]
    public sealed class XmlInt16SerializerAttribute : XmlSerializerAttribute
    {
        public XmlInt16SerializerAttribute()
            : base(Int16Serializer.Instance)
        {
        }
    }

    [AttributeUsage(AttributeTargets.Property, AllowMultiple = false)]
    public sealed class XmlInt32SerializerAttribute : XmlSerializerAttribute
    {
        public XmlInt32SerializerAttribute()
            : base(Int32Serializer.Instance)
        {
        }
    }

    [AttributeUsage(AttributeTargets.Property, AllowMultiple = false)]
    public sealed class XmlInt64SerializerAttribute : XmlSerializerAttribute
    {
        public XmlInt64SerializerAttribute()
            : base(Int64Serializer.Instance)
        {
        }
    }

    [AttributeUsage(AttributeTargets.Property, AllowMultiple = false)]
    public sealed class XmlDoubleSerializerAttribute : XmlSerializerAttribute
    {
        public XmlDoubleSerializerAttribute()
            : base(DoubleSerializer.Instance)
        {
        }
    }

    [AttributeUsage(AttributeTargets.Property, AllowMultiple = false)]
    public sealed class XmlFloatSerializerAttribute : XmlSerializerAttribute
    {
        public XmlFloatSerializerAttribute()
            : base(FloatSerializer.Instance)
        {
        }
    }

    [AttributeUsage(AttributeTargets.Property, AllowMultiple = false)]
    public sealed class XmlDecimalSerializerAttribute : XmlSerializerAttribute
    {
        public XmlDecimalSerializerAttribute()
            : base(DecimalSerializer.Instance)
        {
        }
    }

    [AttributeUsage(AttributeTargets.Property, AllowMultiple = false)]
    public sealed class XmlStringSerializerAttribute : XmlSerializerAttribute
    {
        public XmlStringSerializerAttribute()
            : base(StringSerializer.Instance)
        {
        }
    }

    [AttributeUsage(AttributeTargets.Property, AllowMultiple = false)]
    public sealed class XmlEnumSerializerAttribute : XmlSerializerAttribute
    {
        public XmlEnumSerializerAttribute(Type type)
            : base(type)
        {

        }
    }
}
